package com.itheim.manager.controller;

import com.itheim.manager.domin.Subway;
import com.itheim.manager.service.ManagerService;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class ManagerController {
    //创建Service对象
    private static ManagerService service = new ManagerService();
    //创建键盘录入
    Scanner sc = new Scanner(System.in);

    //客服的登录功能
    public void Login() {

        for (int i = 1; i <= 3; i++) {
            System.out.println("请输入工号");
            String id = sc.next();
            System.out.println("请输入姓名");
            String name = sc.next();
            //判断集合里的账户与管理员输入的是否存在一致，给出判断结果
            //把判断的事情交给Serveice来处理
            boolean result = service.login(id, name);
            //根据业务员返回的结果给出登录结果
            if (result) {
                System.out.println("登录成功");
                  break;

            } else {
                if (i == 3) {
                    System.out.println("今日次数已满，明天再试");
                    System.exit(0);
                } else {
                    System.out.println("登录失败！ 剩余 " + (3 - i) + " 次集合");
                }
            }
        }

    }

    public void start() {
        while (true) {
            System.out.println("--------欢迎来到北京地铁管理系统--------");
            System.out.println("请输入您的选择: 1.查看地铁站  2.添加地铁站  5.退出");
            String choice = sc.next();
            switch (choice) {
                case "1":
                    findSubwayStation();
                    break;
                case "2":
                    addSubwayStation();
                    break;
                case "3":
                    System.out.println("感谢使用");
                    break;
                default:
                    System.out.println("您的输入有误, 请重新输入");
                    break;
            }
        }
    }


    //客服的查看
    private static void findSubwayStation() {
        //通过业务层获取文件中的地铁站信息
        ArrayList<Subway> listSS = service.findAllSubwayStation();
        //如果文件为空给出提示
        //不为空输出打印文件中地铁站的信息
        if (listSS!=null){
            listSS.stream().filter(sub ->sub!=null ).forEach(sub-> System.out.println(sub.toString()));
        }else {
            System.out.println("没有地铁站信息");
        }
    }

    //键盘录入一个地铁站编号并返回
    private String inputSSid(boolean flag) {
        System.out.println("请输入地铁站编号：");
        String ssid;
        while (true) {
            ssid = sc.next();
            boolean exists = service.isExists(ssid);
            if (exists==flag){
                break;
            }else {
                System.out.println("没有这个地铁站编号，请重新输入");
            }
        }
        return ssid;
    }

    //客服的添加
    private void addSubwayStation() {
        //接收用户录入的地铁站编号
        String ssid = inputSSid(false);
        //将录入的数据封装为地铁站对象
        Subway ss=inputSubwayStationInfo(ssid);
        //把封装好的地铁站对象交给业务员去干具体的添加业务
        boolean res=service.addSubwayStation(ss);
        // 根据业务员返回的结果,组织对应的输出信息给用户: 添加成功/添加失败
        if (res){
            System.out.println("添加成功");
        }else {
            System.out.println("添加失败");
        }
    }

    //键盘录入地铁站信息，封装为地铁站对象并返回
    private Subway inputSubwayStationInfo(String ssid) {
        System.out.println("请输入地铁站名称");
        String namess=sc.next();
        System.out.println("请输入地铁路线");
        String liness=sc.next();
        //开闭原则：对扩展开放，对修改关闭 ---增量开发原则
        //根据输入的地铁站信息封装为地铁站信息
        Subway ss = new Subway();
        ss.setSubid(ssid);
        ss.setSubname(namess);
        ss.setSubline(liness);

        return ss;

    }

}
